package edu.northwestern.cbits.purple_robot_manager.plugins;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONException;
import android.content.Context;
import android.content.Intent;
import edu.northwestern.cbits.purple_robot_manager.logging.LogManager;
import edu.northwestern.cbits.purple_robot_manager.probes.Probe;
import edu.northwestern.cbits.purple_robot_manager.triggers.ProbeTrigger;
import edu.northwestern.cbits.purple_robot_manager.triggers.Trigger;
import edu.northwestern.cbits.purple_robot_manager.triggers.TriggerManager;
public class TriggerOutputPlugin extends OutputPlugin
{
public String[] respondsTo()
{
String[] activeActions = { Probe.PROBE_READING };
return activeActions;
}
public void processIntent(Intent intent)
{
Context context = this.getContext();
synchronized (this)
{
List<Trigger> triggers = new ArrayList<>();
triggers.addAll(TriggerManager.getInstance(context).allTriggers());
for (Trigger trigger : triggers)
{
if (trigger instanceof ProbeTrigger)
{
ProbeTrigger probeTrigger = (ProbeTrigger) trigger;
try
{
if (probeTrigger.matchesProbe(intent.getExtras().getString("PROBE")))
{
if (probeTrigger.matches(context, OutputPlugin.jsonForBundle(intent.getExtras())))
trigger.execute(context, false);
}
}
catch (JSONException e)
{
LogManager.getInstance(context).logException(e);
}
}
}
}
}
}